package com.jiangxjsy.crm.mapper;

import com.alibaba.fastjson.JSONObject;
import com.jiangxjsy.model.crm.entity.CrmBackLogDeal;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * wukong-crm-master
 * 蒋胜宇
 * 2025/6/16 14:15
 */

public interface CrmBackLogDealMapper {
    /**
     * 今日 leads 数量
     *
     * @param paras 参数
     * @return 今日 leads 数量
     */
    Integer todayLeadsNum(Map<String, Object> paras);

    /**
     * 今日客户数量
     *
     * @param map 参数
     * @return 今日客户数量
     */
    Integer todayCustomerNum(Map<String, Object> map);

    /**
     * 今日商机数量
     *
     * @param paras 参数
     * @return 今日商机数量
     */
    Integer todayBusinessNum(Map<String, Object> paras);

    /**
     * 今日待 follow 客户数量
     *
     * @param map 参数
     * @return 今日待 follow 客户数量
     */
    Integer followCustomerNum(Map<String, Object> map);

    /**
     * 待处理池待处理数量
     *
     * @param map 参数
     * @return 待处理池待处理数量
     */
    List<JSONObject> putInPoolByRecord(Map<String, Object> map);

    /**
     * 待处理池待处理数量
     *
     * @param map 参数
     * @return 待处理池待处理数量
     */
    List<JSONObject> putInPoolByBusiness(Map<String, Object> map);

    /**
     * 待处理池待处理数量
     *
     * @param map 参数
     * @return 待处理池待处理数量
     */
    List<JSONObject> putInPoolByDealStatus(Map<String, Object> map);

    /**
     * 查询
     *
     * @param model model
     * @param crmType crmType
     * @param userId userId
     * @return List
     */
    @Select("select type_id from wk_crm_back_log_deal where model = #{model} and crm_type = #{crmType} and create_user_id = #{userId}")
    List<Integer> selectDealTypeIdsByUserId(@Param("model") int model, @Param("crmType") int crmType, @Param("userId") Long userId);

    /**
     * 今日待 follow leads 数量
     *
     * @param map 参数
     * @return 今日待 follow leads 数量
     */
    Integer followLeadsNum(Map<String, Object> map);

    /**
     * end签单数量
     *
     * @param map 参数
     * @return end签单数量
     */
    Integer endContractNum(Map<String, Object> map);

    /**
     * 回访提醒数量
     *
     * @param map 参数
     * @return 回访提醒数量
     */
    Integer returnVisitRemindNum(Map<String, Object> map);

    /**
     * 回款提醒数量
     *
     * @param map 参数
     * @return 回款提醒数量
     */
    Integer remindReceivablesPlanNum(Map<String, Object> map);

    /**
     * 根据model、crmType、userId查询
     *
     * @param model model
     * @param crmType crmType
     * @param userId userId
     * @return List
     */
    @Select("select type_id from wk_crm_back_log_deal where model = #{model} and crm_type = #{crmType} and create_user_id = #{userId}")
    List<CrmBackLogDeal> selectTypeId(@Param("model") Integer model, @Param("crmType") Integer crmType, @Param("userId") Long userId);

    /**
     * 待处理池待处理数量
     *
     * @param paras 参数
     * @return 待处理池待处理数量
     */
    Integer todayOvertimeNum(Map<String, Object> paras);
}
